perm filename SRCSYS.MID[SS,SYS] blob sn#426449 filedate 1979-03-18 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	TITLE SRCSYS
C00008 ENDMK
C⊗;
TITLE SRCSYS
SUBTTL MRC 3/18/79

DEFINE FATAL TEXT
 JRST [	OUTSTR [ASCIZ/TEXT
/]
	EXIT]
TERMIN

L=1 ? L1=2 ? S=3 ? BP=4

VERBUF:	BLOCK 10.

TECCM:	ASCIZ\[S,SYS]≠EWSRCLST≠EY5<A>
!FOO!.UBS.≠QB,.XAIDIF/C/D/O/F/S←≠GAI,≠GA≠L.-Z"NOFOO≠'≠
EX≠≠\

SRCSYS:	CAI
	RESET		; Initialize the world
	CLRBFI
	OUTSTR [ASCIZ/You better be a wizard if you're running me!
Have you:
. mounted the right tape and
. enabled a PTY?/]
	INCHRW
	ANDI 177
	CAIE "Y
	 CAIN "y
	  CAIA
	   EXIT
	CLRBFI
	OUTSTR [ASCIZ/
Do you want to watch it?/]
	INCHRW
	ANDI 177
	CAIE "Y
	 CAIN "y
	  TDZA S,S
	   SETO S,
	CLRBFI
	OUTSTR [ASCIZ/
/]
	MOVEI 1		; don't chomp up lots of CPU cycles
	PTYGET L	; Snarf a PTY
	 FATAL [Unable to get a PTY!]
	MOVEI L1,5	; Log ourselves in on it
	PTJOBX L
	 FATAL [PTY LOGIN failed!]
	MOVEI L1,[ASCIZ/ACCESS S,SYS
/]
	PTWRS7 L
	JSR WATINP
	MOVEI L1,[ASCIZ\β
DRD/OPTION=1
.\]
	PTWRS7 L	; Send initial command to PTY
	JSR WATINP
	SKIPE S		; If she's watching it she knows what's going on
	 OUTSTR [ASCIZ/System version?/]
	MOVE BP,[440700,,VERBUF]
VERGET:	INCHWL L1	; Get system version for DIRED
	CAIN L1,".	; I forget sometimes
	 JRST [	OUTSTR [ASCIZ/Hey loser, you didn't need the dot!
/]
		JRST VERGET]
	PTWR1W L
	ANDI L1,177
	CAIE L1,↑M
	 CAIN L1,↑J
	  CAIA
	   IDPB L1,BP	; Remember the version for later
	CAIE L1,↑J
	 JRST VERGET
	MOVEI L1,"E
	PTWR1W L
	JSR WATINP
	MOVEI L1,[ASCIZ/β
ACCESS T,SYS
/]
	PTWRS7 L
	JSR WATINP
	MOVEI L1,[ASCIZ\β
DELETE *./Q
\]
	PTWRS7 L
	JSR WATINP
	MOVEI L1,[ASCIZ\β
R TECO
ERDRD.\]
	PTWRS7 L
	MOVEI L1,VERBUF
	PTWRS7 L
	JSR WATINP
	MOVE BP,[440700,,TECCM]
TECLP:	PTRD1S L	; Gobble a character from PTY input buffer
	 JRST [	ILDB L1,BP
		JUMPE L1,TECDN
		CAIN L1,"≠
		 MOVEI L1,175
		PTWR1S L
		 JRST [	ADD BP,[070000,,] ; Lossage!  Back up byte ptr
			TLNE BP,400000
			 SUB BP,[430000,,1]
			JRST TECLP] ; And try again
		JRST TECLP]
	JUMPN S,TECLP
	OUTCHR L1	; Echo
	JRST TECLP	; Loop back

TECDN:	MOVEI L1,[ASCIZ/β
REWIND
/]
	PTWRS7 L
	JSR WATINP
	MOVEI L1,[ASCIZ/β
RESTORE @DRD./]
	PTWRS7 L
	MOVEI L1,VERBUF
	PTWRS7 L
	MOVEI L1,[ASCIZ/[S,SYS]
/]
	PTWRS7 L
	JSR WATINP
	MOVEI L1,[ASCIZ/β
REWIND
/]
	PTWRS7 L
	JSR WATINP
	MOVEI L1,[ASCIZ\β
R SRCCOM
SRCLST/X
\]
	PTWRS7 L
	JSR WATINP
	MOVEI L1,[ASCIZ\β
TRANSFER/Q ALLDIF.\]
	PTWRS7 L
	MOVEI L1,VERBUF
	PTWRS7 L
	MOVEI L1,[ASCIZ/←*.DIF
/]
	PTWRS7 L
	JSR WATINP
	MOVEI L1,[ASCIZ/ETV ALLDIF./]
	PTWRS7 L
	MOVEI L1,VERBUF
	PTWRS7 L
	MOVEI L1,[ASCIZ\/N
\]
	PTWRS7 L
	JSR WATINP
	MOVEI L1,[ASCIZ\XDEL
ε/∞F
\]
	PTWRS7 L
	JSR WATINP
	MOVEI L1,175
	PTWR1W L
	MOVEI L1,"E
	PTWR1W L
	JSR WATINP
	MOVEI L1,[ASCIZ/SPOOL ALLDIF./]
	PTWRS7 L
	MOVEI L1,VERBUF
	PTWRS7 L
	MOVEI L1,[ASCIZ/
/]
	PTWRS7 L
	JSR WATINP
	MOVEI L1,[ASCIZ\KJOB/F
\]
	PTWRS7 L
FLUSH:	JSR WATINP
	MOVEI L1,(L)
	TTYJOB L1,
	JUMPN L1,FLUSH
	PTYREL L
	OUTSTR [ASCIZ/SRCSYS done!
/]
	EXIT

; Wait until input wait

WATINP:	0
	PTRD1S L
	 JRST [	MOVEI L1,6
		PTJOBX L
		 JRST [	SLEEP ? JRST WATINP+1]
		PTRD1S L ; Paranoia
		 JRST 2,@WATINP
		JRST .+1]
	JUMPN S,WATINP+1
	OUTCHR L1
	JRST WATINP+1

END SRCSYS